iT邦幫忙

2023 iThome 鐵人賽

DAY 3
1
Software Development

由淺入深來探討Elasticsearch,從基礎語法到底層相關原理系列 第 3

【Day 3】由淺入深來探討Elasticsearch - Elasticsearch的組成架構

  • 分享至 

  • xImage
  •  

基本上ES可以分成下圖的幾種結構:

https://ithelp.ithome.com.tw/upload/images/20230905/20161866pLAXGdjw7X.png

接下就對每個結構做介紹

節點(Node):

Elasticsearch是一個分佈式系統,它運行在一個或多個節點上。每個節點是一個獨立的Elasticsearch實例,可以是一台物理服務器或虛擬機器。而節點主要的工作就是傳遞數據、進行節點與節點之間的通訊,並且根據設定可以有不同類型的節點:

Master-eligible Node:

  • 對於穩定叢集的狀態非常重要,決定哪些節點是集群的一部分
  • 負責創建與刪除索引,決定分片(shard)分配給哪些節點,並且在特定情形下也決定哪個replica shard需要轉換成primary shard(如primary shard被破壞)
  • 管理集群的元數據,將客戶端的需求轉發到適當的數據節點
  • 因主節點對於集群的健康狀態太過重要,因此主節點通常建議是只用來處理上述的任務,不處理其他操作,並且在情形許可的狀態下會有多個節點會被當成主節點的候選人,在主節點掛掉時能重新頂替。這部分之後會再更詳細的介紹

Data Node:

  • 負責儲存與搜尋資料,舉凡CRUD、聚合等
  • 當只有一個節點時,節點就同時具備這些特點

叢集(cluster)

  • 由一個或是多個節點所組成,在建立node的同時,cluster就產生了。

索引(index)

  • 相當於關聯式資料庫中的 database,內部含有許多的文件(document)。從index層級中,可以決定各個欄位的映射(mapping),主要與複製分片數量等參數

分片(shard)

  • 索引經由sharding的過程被分割成更小的區塊,而每一個區塊就是shard。shard又可以分成primary shard與replica shard

https://ithelp.ithome.com.tw/upload/images/20230905/20161866ygOoC4aegn.png

  • 索引建立時,就可以選擇要複製多少份,預設為1
  • 複製分片的儲存位置跟主要分片在不同的節點上,意思是只有一個節點是無法啟用複製功能

shard有以下功能

-水平擴展資料的容量

因為藉由多個primary或是多個replica shard並且分佈在不同的node上達到擴展,讓資料分散儲存,提高數據的儲存與處理能力。一個shard雖然沒有固定的大小,會隨著文檔的增加而成長,但是一個shard內最多只能存約20億的左右的文檔,多個shard意味索引能存更多的內容

-提升搜尋表現

因為在多個node上有多個相同的replica shard,在搜尋的當下會同時搜尋所有replica shard,讓搜尋表現提升

-增加容錯與提升彈性

primary shard 和 replica shard不會同時存在同一個node。因此有node掛掉時,該節點的primary shard同時毀損,此時其他node的replica shard 會晉升成primary shard,並保持叢集的健康。當然單node的叢集例外

那單節點是否就完全失去查找速度?

Elasticsearch 還是可以單個節點上使用多個 CPU 核心進行搜索和分析,從而提高效率
如果只有一個節點,那麼即使將索引分成多個分片,也無法實現分佈式搜索和分析。要實現分佈式搜索和分析,必須在多個節點之間分配分片


segment file

  • 一個shard又由一個或是多個segment file組成。segment file儲存了文檔(Document)的數據與倒排索引(Inverted Index,後面的篇幅會再詳細介紹),並且是ES儲存在磁碟中的實體檔案,且有不可更改的特性。當文檔更新時,其實是先刪除舊的segment file,再重新創建新的。

文檔(Document)

  • 是ES最小數據單元,內部是以多個鍵值對存在,通常以JSON格式表示。詳細的內容會再實際操作時再多講解

那今天就大致上把ES整體架構上的基本知識都先交代了,雖然有一些細節草草帶過,但是之後如果有遇到需要解釋的部分會再一起補上。因為ES的底層是遵循lucene的,因此很多原理是相通的。
明天就可以準備開始安裝了~


上一篇
【Day 2】由淺入深來探討Elasticsearch - ELK系統
下一篇
【Day 4】由淺入深來探討Elasticsearch - 快速啟動ES環境
系列文
由淺入深來探討Elasticsearch,從基礎語法到底層相關原理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言